Введение
Благодарим Вас за покупку товара! Установка займет некоторое время. Пожалуйста, внимательно читайте инструкции и старайтесь поэтапно следовать всем рекомендациям.
Для самостоятельной установки потребуются базовые знания: HTML, CSS, JavaScript, системы uCoz. Если вы сомневаетесь, что можете самостоятельно проивести установку, то воспользуйтесь дополнительной услугой по установке скрипта на Ваш сайт.
Скрипт «Оплата товаров бонусами» позволит клиентам вашего интернет-магазина совершать покупки и получать за них определенное количество бонусных баллов, с помощью которых они смогут совершать оплату товара.
Возможности:
- Установка для каждого товара количества бонусов
- Оплата любого товара бонусом при нажатии на кнопку "Оплатить" (совершив онлайн оплату товара) и при заходе на страницу оформленного заказа (например, если оплата товара наличными при получении):
- Списывание со счета клиента бонусов, потраченных на покупку товара
- Таблица в аккаунте клиента со списком товаров, за которые получены бонусы, и количеством бонусов
- Просмотр в аккаунте клиента количество и общую сумму количества бонусов
- Автоматическая генерация бонусов если они не заданы для товаров
- Указание процента начисляемого бонуса от суммы товара
- Значение бонуса автоматически меняется в зависимости от выставленной валюты
- Изменение администратором количества полученных клиентом бонусных баллов
- Вычет бонусов, если заказ был отменен
- Бонусы для групп пользователей: установка количества покупок, по достижению которых для группы будет выдана скидка, а также указание процента получаемой скидки
Требования к установке:
- Активация услуги использования PHP
- Активация uApi
- 1 свободное дополнительное поле
- 1 дополнительное поле в форме заказа
Первый шаг: активация uAPI и PHP
Этап 1. Активация uAPI для нужного модуля
Для активации uAPI в том модуле, где нужна работоспособность скрипта, перейдите в настройки этого модуля и напротив пункта «Включить uAPI для модуля» установите галочку, затем прокрутите страницу вниз и сохраните изменения.
Этап 2. Получение токен-доступов для uAPI
Перейдите на страницу http://uapi.ucoz.com/uapi_panel, авторизуйтесь под своим uID-профилем.

- В пункте «Название приложения» можно написать свое название (абсолютное любое);
- В пункте «Consumer key» введите любой набор латинских букв, как например: hFFSJjknfsdgF87T, рекомендуем сгенерировать;
- В пункте «Consumer secret» оставляем всё как есть;
- В пункте «Redirect URL» введите ссылку на свой сайт (куда собираетесь подключить скрипт);
- Нажмите на Сохранить.

Этап 3. Создание токенов
Перейдите на страницу http://api.ucoz.net/ru/join/reg, выберите «Полуавтоматом». Далее вам предложат ввести данные – их вы можете взять со страницы http://uapi.ucoz.com/uapi_panel. Заполните поля, продолжайте следовать инструкциям системы. В результате вы должны получить токены. Пошаговая иллюстрация:












Активация PHP
Убедитесь, что на вашем сайте активна услуга PHP. Для этого перейдите на главную страницу панели управления и обратите внимание на правую часть страницы. В случае наличия активной услуги вы увидите текст «PHP детали».
Второй шаг: загрузка скриптов на FTP PHP
Этап 1. Установка пароля
Если у вас задан пароль к FTP PHP, сразу же переходите к следующему этапу.Перейдите на главную страницу панели управления вашим сайтом, в правой верхней части нажмите на ссылку «PHP детали».


Этап 2. Подключение к PHP FTP серверу
После установки пароля, скачайте FTP-клиент, рекомендуем бесплатный FTP клиент FileZilla. После установки программы, в верхней части вводим параметры подключения:- Сервер: s2000.ucoz.net
- Логин (FTP login): введите свой логин, который указан в меню "PHP детали"
- Пароль: пароль который вы ввели ранее в специальном разделе
После заполнения полей нажмите на кнопку «Быстрое соединение».

Этап 3. Загрузка скриптов на PHP FTP сервер
После успешного подключения вы увидите каталог под именем «scripts» в правой части окна программы. Обязательно переходим в этот каталог двойным кликом по нему.
Теперь загрузите в этот каталог папку из архива со скриптом «bonuses». Загрузить легко, просто перетащите эту папку в правый диалог (где отображаются каталоги и файлы хранящиеся на сервере).
Узнать статус передачи файлов вы можете в окне статуса, которое находится в нижней части программы, там отображаются файлы которые ожидают передачи и те, которые не удалось передать, в частности которые были успешно переданы.
Третий шаг: загрузка файлов на сайт
Перейдите в Панель управления » Файловый менеджер.


Теперь зайдите в папку js и загрузите в неё все файлы, которые находятся в архиве в папке «скрипты».
Далее, перейдите в папку css и загрузите в неё все файлы, которые находятся в архиве в папке «стили».
Затем перейдите в папку images и загрузите в неё все файлы, которые находятся в архиве в папке «изображения».
И наконец, перейдите в папку language и загрузите в неё все файлы, которые находятся в архиве со скриптом в папке «язык».
Четвертый шаг: создание и настройка бота
Что такое бот и зачем его создавать? Бот позволяет автоматически произвести изменение стоимости товара на странице оформления заказа после того, как клиент использует для оплаты бонусные баллы.
Этап 1. Создание бота
Для создания бота перейдите в модуль «Пользователи» и кликните по кнопке «Добавить пользователя».

Создайте нового пользователя, введите для него логин, пароль, полное имя, укажите email и укажите для него группу «Администраторы».

После того, как бот будет создан, перейдите в настройки группы «Администраторы»

В настройках прав администратора, включите для модуля «Интернет магазин» опцию «Редактировать цены товаров в заказе», после чего сохраните изменения.

Если вы хотите создать для бота отдельную группу, то убедитесь, чтобы в настройках прав группы для интернет-магазина были установлены следующие опции:
-
Управлять заказами -
Редактировать содержимое заказов -
Редактировать цены товаров в заказе

Этап 2.Настройка бота
Перейдите в папку со скриптом «config», где расположен файл с настройками «config.php». Укажите в нем следующие значения:
-
bot_login– значение логина бота -
bot_password– значение пароля бота
После чего сохраните файл настроек и залейте на PHP сервер через FTP. Вот и все, установка и настройка бота закончена!
Пятый шаг: настройка
Этап 1. Настройка интернет-магазина
Перейдите в настройки модуля и активируйте опцию «После оформления заказа зарегистрированным пользователем»:

Чтобы изменение вступили в силу, кликните по кнопке «Сохранить».
Этап 2. Настройка дополнительного поля
Для скрипта понадобится одно дополнительное поле, которое будет использоваться при редактировании товара и храненить в себе значения бонуса. Чтобы активировать дополнительное поле, перейдите в настройки интернет-магазина:

После этого активируйте одно дополнительно поле, если другие поля у вас уже заняты:

Чтобы изменить название дополнительного поля, выбранного для использования в скрипте, перейдите в «Настройки» и «Замена стандартных надписей». Найдите вкладку «Дополнительные поля товаров магазина» и измените название поля, например, назовите его «Сумма бонусов»

Поле будет доступно для заполнения на страницах создания и редактирования товаров:

Этап 3. Добавление и настройка дополнительного поля в форме заказа
Теперь потребуется создать дополнительное поле для формы заказа товаров. Для этого в разделе «Заказы и пользователи» перейдите на страницу «Управление полями заказа»:

Кликните по кнопке «Добавить новое поле» и настройте поле:
- добавьте ему название, например - «Оплатить бонусами»
- укажите полю тип - text
- для значения «Выводить, если товар:» укажите -любого типа-
Для сохранения изменений кликните по кнопке «Сохранить».


После создания поля, на странице «Управление полями заказа» в блоке «Отображение полей товара в заказе» укажите активированное дополнительное поле:

Шестой шаг: установка кода и настройка скрипта
Этап 1. Установка номера дополнительного поля
Зайдите папку «config», которая находится в архиве со скриптом, найдите в нём файл config.php и откройте его в любом текстовом редакторе. Найдите в нем ключ other_id и укажите в значении номер дополнительного поля. После чего сохраните файл и залейте на PHP сервер через FTP. Например, если код дополнительного поля $OTHER3$, то его номер - 3.
Этап 2. Установка кода в шаблон «Главная страница магазина»
Перейдите в шаблон «Главная страница магазина» и между тегами <head> и </head> подключите файл со стилями:
<link type="text/css" rel="StyleSheet" href="/css/bonus.css">
Затем перед закрывающим тегом </body> установите следующий js файл:
<script src="/js/bonus-curr.js"></script>
Этап 3. Установка кода в шаблон «Каталог товаров»
Перейдите в шаблон «Каталог товаров» и между тегами <head> и </head> подключите файл со стилями:
<link type="text/css" rel="StyleSheet" href="/css/bonus.css">
Затем перед закрывающим тегом </body> установите следующий js файл:
<script src="/js/bonus-curr.js"></script>
Этап 4. Установка кода в шаблон «Вид товара в каталоге»
Перейдите в шаблон «Вид товара в каталоге» и установите следующий код там, где хотите видеть количество бонуса для товара:
<?if($OTHERN$)?><div class="bonus-product-entry"><span>+ <span class="bonus-entry-value">$OTHERN$</span> бонусов на счет</span></div><?endif?>
$OTHERN$, укажите номер дополнительного поля, используемого для хранения значения бонусного балла. Например, $OTHER3$.
Далее, найдите в шаблоне оператор $PRICE$ (их может быть несколько) и замените на следующий код:
<span class="shop-entry-price">$PRICE$</span>
Этап 5. Установка кода в шаблон «Страница товара»
Перейдите в шаблон «Страница товара» и между тегами <head> и </head> подключите файл со стилями:
<link type="text/css" rel="StyleSheet" href="/css/bonus.css">
Затем в этом же шаблоне установите код, который выводит количество бонусов, которые клиент получит на свой счет после покупки товара:
$OTHERN$, укажите номер дополнительного поля, используемого для хранения значения бонусного балла. Например, $OTHER3$.
<?if($OTHERN$)?><div class="bonus-product-entry"><span>+ <span class="bonus-view-value">$OTHERN$</span> бонусов на счет</span></div><?endif?>
Вы можете установить вывод количества бонусов там, где это необходимо. Например, после цены товара.
Далее, найдите в шаблоне оператор $PRICE$ (их может быть несколько) и замените на следующий код:
<span class="shop-view-price">$PRICE$</span>
Затем перед закрывающим тегом </body> установите следующий js файл:
<script src="/js/bonus-curr.js"></script>
Этап 6. Установка кода в шаблон «Страница пользователя»
Перейдите в шаблон «Страница пользователя» и между тегами <head> и </head> подключите следующие css файлы:
<link type="text/css" rel="StyleSheet" href="/css/bonus.css"> <link type="text/css" rel="StyleSheet" href="/css/jquery.dataTables.css">
После этого перед закрывающим тегом </body> установите следующий js файл:
<script src="/js/jquery.dataTables.min.js"></script>
Затем в этом же шаблоне установите код для вывода количество бонусных баллов и списока товаров за которые были получены бонусы:
<?if($USER_ID$ == $_USER_ID$ or $GROUP_ID$ == 4)?>
<div id="bonuses"></div>
<script>
$.ajax({
type: "GET",
url: "/php/bonuses/index.php",
data: "action=account&user_id=$_USER_ID$",
cache: false,
success: function(html){
$("#bonuses").html(html);
$('#bonusTable').DataTable({
"language": {
"url": "/language/dataTables.ru.lang.json"
}
});
}
});
</script>
<?endif?>
Этап 7. Установка кода в шаблон «Страница служебных форм»
Перейдите в шаблон «Страница служебных форм» и перед закрывающим тегом </body> установите следующий js файл:
<script src="/js/bonus-curr.js"></script>
Далее, найдите код кнопки оформления заказа:
<div id="order-submit">$ORDER_BUTTON$</div>перед которой установите следующий код:
<script defer>
BONUS = {
user_id : '$USER_ID$',
other_id: '1',
field_id : '3',
}
$.ajax({
type: "GET",
url: "/php/bonuses/index.php",
data: "action=checkout&user_id=" + BONUS.user_id,
cache: false,
success: function(html){
$("#bonuses").html(html);
}
});
</script>
<div id="bonuses"></div>

Далее, найдите следующее условное выражение:
<?if($PAGE_ID$=='invoices')?> <?endif?>
Внутри него установите следующий код:
<script>
$(document).ready(function(){
$('body').on('change', '[name="status"]', function(){
if($('input.sel:checked').length){
//если заказ отменен
if ($(this).val() == '9') {
//записываем id отмененных заказов
var order_array = [];
$('input.sel:checked').each(function(){
order_array.push(this.name)
});
//списываем количество полученных за заказ бонусов
$.ajax({
type: "GET",
url: "/php/bonuses/index.php",
data: "action=order_cancel&data_order="+order_array,
cache: false,
success: function(){
console.log('Бонусы за отмененные заказы успешно списаны со счета');
}
});
console.log('Статус заказа - отменен');
}
console.log('Статус заказа изменен');
}
});
});
</script>
Этап 8. Установка кода в шаблон «Страница заказа»
Перейдите в шаблон «Страница заказа» и после открывающего тега <body> установите код:
<div id="js_order_bonus_content"> <div id="js_order_bonus_block">
Должно получиться вот так:
<body> $ADMIN_BAR$ <div id="js_order_bonus_content"> <div id="js_order_bonus_block">
Оплата через кнопку "Оплатить" (онлайн оплата товара)
Если хотите, чтобы оплата и зачисление бонусов при покупки происходило при нажатии на кнопку "Оплатить" (совершение онлайн оплаты товара), то перед закрывающим тегом </body> установите следующий код:
</div>
</div>
<script>
BONUS = {
other_id : '1',
user_id : '$USER_ID$',
group_id : '$GROUP_ID$',
order_id : '$ORDER_ID$',
url_hash : '$REQUEST_URI$',
bonus : '$ORDER_FIELD_3$'
}
$(window).load(function () {
var currObject = uCoz.sh_curr;
for (var key in currObject) {
if ($('.order-item-sum').text().indexOf(currObject[key].disp) + 1) {
BONUS.currency = currObject[key].rate;
}
}
$.ajax({
type: "GET",
url: "/php/bonuses/index.php",
data: "action=change_price&user_id=" + BONUS.user_id + "&group_id=" + BONUS.group_id + "&order_id=" + BONUS.order_id + "&url_hash=" + BONUS.url_hash + "&bonus="+ BONUS.bonus,
cache: false,
success: function(){
$('#js_order_bonus_content').load("$REQUEST_URI$ #js_order_bonus_block", function() {
var other_id = BONUS.other_id,
currObject = uCoz.sh_curr;
for (var key in currObject) {
if ($('.order-item-sum').text().indexOf(currObject[key].disp) + 1) {
var bonusView = $('.order-item-other' + other_id).text();
$('.order-item-other' + other_id).text(Math.floor(bonusView / currObject[key].rate * 100) / 100);
BONUS.currency = currObject[key].rate;
}
}
});
console.log('Цены изменены успешно');
}
});
});
</script>
<?if($PAY_NOW$)?>
<script>
function payNowBtn() {
$.ajax({
type: "GET",
url: "/php/bonuses/index.php",
data: "action=pay_bonus&user_id=" + BONUS.user_id + "&bonus=" + BONUS.bonus + "&order_id=" + BONUS.order_id + "&url_hash=" + BONUS.url_hash+ "¤cy=" + BONUS.currency,
cache: false,
success: function(){
console.log('Бонус зачислен');
}
});
}
function payFromBalance(obj){
if(confirm(obj.confirm.value)){
new _uWnd('win-'+obj.id,obj.rem.value,-340,-120,{autosize:0,modal:1,closeonesc:1,resize:0},{form:obj.id,url:obj.action});
payNowBtn();
}else{
if(typeof window.shop_redirect != 'undefined'){
location.href = window.shop_redirect; window.shop_redirect = null;
}
}
return false;
}
if ($('#js_bonus_btn_pay input[name="rem"]').length == 0) {
$('body').on('submit', '#js_bonus_btn_pay form', function(e){
e.preventDefault();
payNowBtn();
this.submit();
});
}
</script>
<?endif?>
<script src="/js/bonus-curr.js"></script>
$ORDER_FIELD_N$, укажите номер дополнительного поля формы заказа.

Найдите код кнопки «Оплатить сейчас»: $PAY_NOW$ и замените его на следующее:
<div id="js_bonus_btn_pay">$PAY_NOW$</div>
Оплата при входе на страницу оформленного заказа (наличными при получении, не через кнопку)
Если хотите, чтобы оплата и зачисление бонусов происходило при входе на страницу оформленного заказа (например, если оплата товара наличными при получении), то перед закрывающим тегом </body> установите следующий код:
</div>
</div>
<script>
BONUS = {
other_id : '1',
user_id : '$USER_ID$',
group_id : '$GROUP_ID$',
order_id : '$ORDER_ID$',
url_hash : '$REQUEST_URI$',
bonus : '$ORDER_FIELD_3$'
}
$(window).load(function () {
var currObject = uCoz.sh_curr;
for (var key in currObject) {
if ($('.order-item-sum').text().indexOf(currObject[key].disp) + 1) {
BONUS.currency = currObject[key].rate;
}
}
$.ajax({
type: "GET",
url: "/php/bonuses/index.php",
data: "action=change_price&user_id=" + BONUS.user_id + "&group_id=" + BONUS.group_id + "&order_id=" + BONUS.order_id + "&url_hash=" + BONUS.url_hash + "&bonus="+ BONUS.bonus,
cache: false,
success: function(){
$('#js_order_bonus_content').load("$REQUEST_URI$ #js_order_bonus_block", function() {
var other_id = BONUS.other_id,
currObject = uCoz.sh_curr;
for (var key in currObject) {
if ($('.order-item-sum').text().indexOf(currObject[key].disp) + 1) {
var bonusView = $('.order-item-other' + other_id).text();
$('.order-item-other' + other_id).text(Math.floor(bonusView / currObject[key].rate * 100) / 100);
BONUS.currency = currObject[key].rate;
}
}
});
console.log('Цены изменены успешно');
}
});
$.ajax({
type: "GET",
url: "/php/bonuses/index.php",
data: "action=pay_bonus&user_id=" + BONUS.user_id + "&bonus=" + BONUS.bonus + "&order_id=" + BONUS.order_id + "&url_hash=" + BONUS.url_hash+ "¤cy=" + BONUS.currency,
cache: false,
success: function(){
console.log('Бонус зачислен');
}
});
});
</script>
<script src="/js/bonus-curr.js"></script>
$ORDER_FIELD_N$, укажите номер дополнительного поля формы заказа.

Седьмой шаг: создание страницы для админки бонусов и установка кода
Этап 1. Создание страницы и настройка
В панели управления кликните по кнопке «Добавить страницу»:

В настройках страницы установите право доступа только для группы Администраторов:

Этап 2. Установка кода
Переключитесь на режим HTML-редактирования страницы:

Затем установите следующий код и сохраните страницу:
<link type="text/css" rel="StyleSheet" href="/css/bonus.css">
<script src="/js/jquery.dataTables.min.js"></script>
<link type="text/css" rel="StyleSheet" href="/css/jquery.dataTables.css">
<div id="bonuses"></div>
<script>
$.ajax({
type: "GET",
url: "/php/bonuses/index.php",
data: "action=admin",
cache: false,
success: function(html){
$("#bonuses").html(html);
$('#bonusUserTable').DataTable({
"language": {
"url": "/language/dataTables.ru.lang.json"
}
});
}
});
</script>
Настройки скрипта
Ниже перечислены все настройки скрипта в файле config.php:
-
consumer_key– ключ uApi; -
consumer_secret– секретный ключ uApi; -
token– токен uApi; -
token_secret– секретный токен uApi; -
bot_login– логин бота; -
bot_password– пароль бота; -
other_id– номер дополнительного поля; - Автогенерация бонусов:
-
auto_bonus– генерация бонуса: true - включено, false - выключено; -
auto_min– минимальное значение, от которого будет генерироваться бонус (работает, если значение auto_bonus равно true); -
auto_max– максимальное значение, от которого будет генерироваться бонус (работает, если значение auto_bonus равно true); - Начисление процента бонуса от суммы товара:
-
percent_bonus– начисление бонуса от суммы товара: true - включено, false - выключено; -
percent_bonus_sum– количество процента, начисляемое от суммы товара (работает, если значение percent_bonus равно true); - Выдача бонусов группам пользователей:
-
groups– скидка для групп пользователей: true - включено, false - выключено; -
group_id– указание группы пользователя (работает, если значение groups равно true). Является элементом массива, в качестве ключа которого, задается id группы пользователя. -
count_buy– значение количества покупок, по достижению которых будет выдана скидка (работает, если значение groups равно true). Установите null, чтобы выдавать скидку независимо от количества покупок; -
percent– значение процента скидки (работает, если значение groups равно true);
Пример использования:
//id 4 - группа Администратор $config['group_id'][4] = array( 'count_buy' => null, //значение количества покупок, по достижению которых будет выдана скидка 'percent' => 5 //значение процента скидки ); //id 1 - группа Пользователи $config['group_id'][1] = array( 'count_buy' => 25, //значение количества покупок, по достижению которых будет выдана скидка 'percent' => 15 //значение процента скидки );
Установка завершена!
Если у вас возникли вопросы по товару или проблема с установкой, то Вы можете связаться с нами по адресу электронной почты support@uscript.pro